package com.library.web.user;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.*;

import java.io.IOException;

/**
 * 处理用户退出登录逻辑
 */
@WebServlet("/logout")
public class LogoutServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 1. 清除Session中的用户信息
        HttpSession session = req.getSession();
        if (session != null) {
            session.removeAttribute("user"); // 移除用户信息
            session.invalidate(); // 使Session失效（彻底清除）
        }

        // 2. 清除登录相关的Cookie（记住我功能的Cookie）
        Cookie[] cookies = req.getCookies();
        if (cookies != null) {
            for (Cookie cookie : cookies) {
                if ("username".equals(cookie.getName()) || "password".equals(cookie.getName())) {
                    cookie.setValue(""); // 清空Cookie值
                    cookie.setMaxAge(0); // 设置立即失效
                    cookie.setPath(req.getContextPath() + "/"); // 与设置Cookie时的路径保持一致
                    resp.addCookie(cookie);
                }
            }
        }

        // 3. 重定向到登录页（或首页）
        resp.sendRedirect(req.getContextPath() + "/index.jsp");
    }

    // 支持POST请求（如果前端用表单提交退出）
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
